﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using SoftHotel.Models;

namespace SoftHotel.Controllers
{ 
    public class ParametrosController : Controller
    {
        private ParametroDAO parametroDao = new ParametroDAO();

        //
        // GET: /Parametros/

        public ViewResult Index()
        {
            ViewBag.tipo = new SelectList(parametroDao.parametros, "tipo", "tipo");
            return View();
        }

        //
        // POST: /parametros/

        [HttpPost]
        public ActionResult Index(Parametro parametro, string button)
        {
            if (button == "Buscar")
            {
                return RedirectToAction("Search", "Parametros", parametro);
            }
            else
            {
                return RedirectToAction("Create", "Parametros");
            }
        }

        //
        // GET: /parametros/Search

        public ActionResult Search(Parametro parametro)
        {
            var listaPar = parametroDao.parametros.Where(a => a.idParametro > 0);
            /*
            if (parametro.idParametro != 0)
            {
                listaPar = listaPar.Where(a => a.idParametro == parametro.idParametro);
            }
            if (parametro.valor != null)
            {
                listaPar = listaPar.Where(a => a.valor == parametro.valor);
            }
            if (parametro.tipo != null)
            {
                listaPar = listaPar.Where(a => a.tipo == parametro.tipo);
            }
            if (parametro.valorNum != 0)
            {
                listaPar = listaPar.Where(a => a.valorNum == parametro.valorNum);
            }
            if (parametro.idPadre != null)
            {
                listaPar = listaPar.Where(a => a.idPadre == parametro.idPadre);
            }
            if (parametro.codUnico != null)
            {
                listaPar = listaPar.Where(a => a.codUnico == parametro.codUnico);
            }
            */
            return View(listaPar);
        }

        //
        // POST: /parametros/Create

        [HttpPost]
        public ActionResult Search(string button)
        {
            if (button == "Nuevo")
            {
                return RedirectToAction("Create", "Parametros");
            }
            if (button == "Regresar")
            {
                return RedirectToAction("Index", "Parametros");
            }
            return RedirectToAction("Search", "Parametros");
        }

        //
        // GET: /Parametros/Create

        public ActionResult Create()
        {
            ViewBag.tipo = new SelectList(parametroDao.parametros, "tipo", "tipo");
            return View();
        }

        //
        // POST: /Parametros/Create

        [HttpPost]
        public ActionResult Create(Parametro parametro)
        {
            if (ModelState.IsValid)
            {
                parametroDao.parametros.Add(parametro);
                parametroDao.SaveChanges();
                return RedirectToAction("Index");
            }

            ViewBag.tipo = new SelectList(parametroDao.parametros, "tipo", "tipo");
            return View();
        }

        //
        // GET: /Parametros/Details/5

        public ViewResult Details(int id)
        {
            Parametro parametro = parametroDao.parametros.Find(id);
            return View(parametro);
        }

        //
        // GET: /Parametros/Edit/5
 
        public ActionResult Edit(int id)
        {
            Parametro parametro = parametroDao.parametros.First(p => p.idParametro == id);

            ViewBag.tipo = new SelectList(parametroDao.parametros, "tipo", "tipo", parametro.tipo);

            return View(parametro);
        }

        //
        // POST: /Parametros/Edit/5

        [HttpPost]
        public ActionResult Edit(Parametro parametro)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    parametroDao.Entry(parametro).State = EntityState.Modified;
                    parametroDao.SaveChanges();
                    return RedirectToAction("Index");
                }
                ViewBag.tipo = new SelectList(parametroDao.parametros, "tipo", "tipo", parametro.tipo);
                return View();
            }
            catch
            {
                return View();
            }
        }

        //
        // GET: /Parametros/Delete/5
 
        public ActionResult Delete(int id)
        {
            Parametro parametro = parametroDao.parametros.Find(id);
            return View(parametro);
        }

        //
        // POST: /Parametros/Delete/5

        [HttpPost, ActionName("Delete")]
        public ActionResult DeleteConfirmed(int id)
        {            
            Parametro parametro = parametroDao.parametros.Find(id);
            parametroDao.parametros.Remove(parametro);
            parametroDao.SaveChanges();
            return RedirectToAction("Index");
        }

        protected override void Dispose(bool disposing)
        {
            parametroDao.Dispose();
            base.Dispose(disposing);
        }
    }
}